package org.deng.learn.es.rest;

/**
 * @author 邓力宾
 * @date 2021/3/12 16:48
 * @desc
 */
public class FieldType {

    public FieldType() {

    }

    public FieldType(String type) {
        this.type = type;
    }

    public FieldType(String type, boolean store) {
        this.type = type;
        this.store = store;
    }

        /*
text  ⽤于全⽂索引，搜索时会自动使用分词器进⾏分词再匹配
keyword  不分词，搜索时需要匹配完整的值
整型： byte，short，integer，long
浮点型： float, half_float, scaled_float，double
日期类型 date
    #插入|更新此字段的值时，有3种表示方式
    #使用固定格式的字符串
    "2020-04-18"、"2020/04/18 09:00:00"
    #值使用长整型的时间戳，1970-01-01 00:00:00，s
    1610350870
    #值使用长整型的时间戳，ms
    1641886870000
范围型:integer_range， long_range， float_range，double_range，date_range
    插入|更新文档|字段时，值写成json对象的形式： (gt是大于，lt是小于，e是equals等于。)
    "age_limit" : {
    　"gte" : 20,
    　"lte" : 40
    }
boolean:true、false

⼆进制binary:   会把值当做经过 base64 编码的字符串，默认不存储，且不可搜索
*/

    private String type;// 字段类型
    /*
     *在定义index的mapping的时候，我们可以指定某些fields是否要store（默认是不store)
     * 不管将store设置为ture or false, elasticsearch都将为我们存储这些field, 不同的是：
当store为false时(默认配置），这些field只存储在"_source" field中。
当store为true时，这些field的value会存储在一个跟_source平级的独立的field中。同时也会存储在_source中，所以有两份拷贝。
     */
    private boolean store = false;

    //使用ik分词器
    //ik_smart ：最少切分
    //ik_max_word ：最细粒度切分
    private String analyzer = "ik_max_word ";//分词器

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public boolean getStore() {
        return store;
    }

    public void setStore(boolean store) {
        this.store = store;
    }

    public String getAnalyzer() {
        return analyzer;
    }

    public void setAnalyzer(String analyzer) {
        this.analyzer = analyzer;
    }
}
